﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dominio.Excecoes;

namespace Dominio {
    public class Categoria : CategoriaBase{
        public virtual IList<SubCategoria> SubCategorias { get; protected set; }
        public virtual Usuario Usuario { get; protected set; }

        protected Categoria() { 
            
        }

        public Categoria(string nome, Usuario usuario) : base(nome){
            this.Usuario = usuario;
            this.SubCategorias = this.SubCategorias ?? new List<SubCategoria>();
        }

        protected internal virtual SubCategoria NovaSub(string nome) {
            var subCategoria = new SubCategoria(nome, this);

            SubCategorias.Add(subCategoria);

            return subCategoria;
        }

        protected internal virtual void ApagaSub(long idSubCategoria) {
            var sub = SubCategorias.SingleOrDefault(x => x.Id == idSubCategoria);
            if (sub == null)
                throw new NaoEncontrado("Subcategoria não encontrada!");

            SubCategorias.Remove(sub);
        }

        protected internal virtual SubCategoria ObtemSub(long idSubCategoria) {
            return SubCategorias.SingleOrDefault(x => x.Id == idSubCategoria);
        }
    }
}
